package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class PersistenciaReportesImm implements IPersistenciaReportesImm{

	
private static PersistenciaReportesImm instance =null; //variable para crear la instancia de la peristencia reportes imm
private static Connection conn;

	private PersistenciaReportesImm(){
		try {
			Context initContext = new InitialContext();
			DataSource ds = (DataSource)initContext.lookup("java:imm-db");
			conn = ds.getConnection();
			//conn.setAutoCommit(false);			
		} catch (NamingException e) {
			System.out.println("SrvImm.Persistencia.PersistenciaVenta.PersistenciaVentaImm NamingException");
			e.printStackTrace();
		} catch (SQLException e) {
			System.out.println("SrvImm.Persistencia.PersistenciaVenta.PersistenciaVentaImm SQLException");
			e.printStackTrace();
		}
	}
	
	public static PersistenciaReportesImm getInstance(){
		
		if(instance == null){ //verifica si existe una instancia de la persistencia, sino devuelve la creada anteriormente
			instance = new PersistenciaReportesImm();			
		}
		return instance;
	}

	@Override
	public float getTotalesFranjas(int diaInicio, int mesInicio,
			int anioInicio, int diaFin, int mesFin, int anioFin) {
		float retorno = 0;
		try{
			
			String fechaI = anioInicio+"-"+mesInicio+"-"+diaInicio;
			String fechaF = anioFin+"-"+mesFin+"+"+diaFin;
			Statement ps = conn.createStatement();
			//repareStatement("Select importe from vendido where fechaVenta between '"+ fechaI +"' and '" + fechaF+"'");
			ResultSet rs = ps.executeQuery("Select importe from vendido where fechaVenta between '"+ fechaI +"' and '" + fechaF+"'");
			while(rs.next())
			{
				float importe = rs.getFloat("importe");
				retorno += importe;
			}
			rs.close();
			ps.close();
			//conn.close();
			
			
		}catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return retorno;
		
	}

	public float getTotalesMensuales(int mesInicio, int mesFin) {
		float retorno = 0;
		try{
			
			
			Statement ps = conn.createStatement();
			//repareStatement("Select importe from vendido where fechaVenta between '"+ fechaI +"' and '" + fechaF+"'");
			ResultSet rs = ps.executeQuery("select importe from vendido where month(fechaVenta) between "+ mesInicio+" and "+mesFin);
			while(rs.next())
			{
				float importe = rs.getFloat("importe");
				retorno += importe;
			}
			rs.close();
			ps.close();
			//conn.close();
			
			
		}catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return retorno;
	}
	
}
	

